Software defined networking (SDN) is an approach to networking that enables applications to communicate with and manipulate the control software of network devices and resources. A key aspect of SDN is the abstraction between the forwarding and the control/management planes in order to separate them and provide applications with the means necessary to control the network. This separation provides faster innovation cycles at both planes.
In SDN, the control plane and the forwarding plane communicate via a southbound interface using protocols such as Forwarding and Control Element Separation (ForCES), Network Configuration Protocol (NETCONF), and Interface to the Routing System (I2RS). Through the southbound interface, the control plane manages the forwarding plane behavior by manipulating the corresponding forwarding tables.
There are two categories of forwarding tables. The first category of forwarding tables utilizes an exact match to map an input key (e.g., a Multiprotocol Label Switching (MPLS) label, a Media Access Control (MAC) address, Virtual Local Area Network identifier (VLAN ID), etc.) to an output set of forwarding information (e.g., a MPLS label, an egress port identifier (ID), VLAN ID, etc.). The second category of forwarding tables utilizes a wild card match. Exact match forwarding tables include the Forwarding DataBase (FDB), Label Forwarding Information Base (LFIB), VLAN Translation (VT) table, etc. Exact match forwarding tables are typically implemented as hash tables.
In a traditional network architecture, each exact match forwarding table is implemented using its own dedicated hardware resources (e.g., memory). In SDN, however, the exact match forwarding tables are typically are implemented using shared hardware resources. Such an architecture relieves the network designer from having to plan and allocate dedicated resources for each forwarding table, and provides more possibilities for programming, scalability, performance, etc.
Although multiple forwarding tables may share the same common forwarding table, in some instances, the forwarding tables may have different performance requirements, e.g., due to service-level agreements (SLAs) or due to the purpose of the forwarding tables. For example, an administrator may determine that a VT table should have higher precedence (i.e., priority) than the FDB because each VLAN translation entry could represent many traffic flows while each FDB entry represents only one traffic flow.
A conventional control plane does not provide a mechanism for distributing precedence information of forwarding tables to the forwarding plane. Without such precedence information, when a new forwarding table entry collides with a forwarding table entry currently stored in the shared forwarding table, the forwarding plane is not able to determine whether the new forwarding table entry should be discarded, or the forwarding table entry currently stored in the shared forwarding table should be evicted and discarded. The result is that the forwarding tables with higher precedence may not be allocated the needed hardware resources, and the corresponding traffic is interrupted because their forwarding information are not available in the shared forwarding table. Thus, there is a need for a mechanism in a control plane to distribute precedence information of forwarding tables to the forwarding plane in order to enable the forwarding plane to intelligently determine which forwarding table entries should be discarded when there is limited resources in the shared forwarding table.